<?php

require_once dirname(__FILE__).'/../lib/alumnoGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/alumnoGeneratorHelper.class.php';

/**
 * alumno actions.
 *
 * @package    ecampus
 * @subpackage alumno
 * @author     Grupo 608
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class alumnoActions extends autoAlumnoActions
{
    public function executeBatchInscribir(sfWebRequest $request)
    {
        $ids = $request->getParameter('ids');

        $q = Doctrine_Query::create()
            ->from('Alumno a')
            ->whereIn('a.id_usuario', $ids);
        foreach ($q->execute() as $alumno)
        {
        $alumno->inscribir();
        }
        $this->getUser()->setFlash('notice', 'Los alumnos se inscribieron correctamente.');
        $this->redirect('alumno');
    }
    public function executeListInscribir(sfWebRequest $request)
    {
        $alumno = $this->getRoute()->getObject();
        $alumno->inscribir();
        $this->getUser()->setFlash('notice','El alumno fue inscripto correctamente');
        $this->redirect('alumno');
    }
    public function executeListEliminar(sfWebRequest $request)
    {
        $alumno = $this->getRoute()->getObject();
        if($alumno->tieneCursosAsignados())
        {
            $this->getUser()->setFlash('error','No se puede eliminar, el alumno tiene cursos asignados');
        }
        else
        {
            $alumno->eliminar();
            $this->getUser()->setFlash('notice','El alumno fue borrado correctamente');
        }
        $this->redirect('alumno');
    }
    public function executeListDelete(sfWebRequest $request)
    {
        $this->executeListEliminar($request);
    }
    public function executeBatchEliminar(sfWebRequest $request)
    {
        $b = true;
        $ids = $request->getParameter('ids');

        $q = Doctrine_Query::create()
            ->from('Alumno a')
            ->whereIn('a.id_usuario', $ids);
        foreach($q->execute() as $alumno)
        {
            if($alumno->sePuedeEliminar())
            {
                $alumno->eliminar();
            }
            else
            {
                $b &= false;
            }
        }
        if($b)
        {
            $this->getUser()->setFlash('notice','Los registros se eliminaron correctamente');
        }
        else
        {
            $this->getUser()->setFlash('error','Algunos registros no pudieron eliminarse');
        }
        $this->redirect('alumno');
    }
    public function executeBatchDelete(sfWebRequest $request)
    {
        $this->executeBatchEliminar($request);
    }
    /*
     * dar de alta se refiere a recuperar logicamente al alumno
     */
    public function executeListDarDeAlta(sfWebRequest $request)
    {
        $alumno = $this->getRoute()->getObject();
        $alumno->darDeAlta();
        $this->getUser()->setFlash('notice','El alumno fue dado de alta correctamente');
        $this->redirect('alumno');
    }
    public function executeBatchDarDeAlta(sfWebRequest $request)
    {
        $ids = $request->getParameter('ids');

        $q = Doctrine_Query::create()
            ->from('Alumno a')
            ->whereIn('a.id_usuario', $ids);
        foreach ($q->execute() as $alumno)
        {
            $alumno->darDeAlta();
        }
        $this->getUser()->setFlash('notice', 'Los alumnos fueron dados de alta correctamente.');
        $this->redirect('alumno');
    }
    /*
     * darDeBaja se refiere a cancelar las inscripciones en los cursos
     */
    public function executeListDarDeBaja(sfWebRequest $request)
    {
        $alumno = $this->getRoute()->getObject();
        $alumno->darDeBaja();
        $this->getUser()->setFlash('notice','El alumno fue dado de baja en todos sus cursos');
        $this->redirect('alumno');
    }
    public function executeBatchDarDeBaja(sfWebRequest $request)
    {
        $ids = $request->getParameter('ids');

        $q = Doctrine_Query::create()
            ->from('Alumno a')
            ->whereIn('a.id_usuario', $ids);
        foreach ($q->execute() as $alumno)
        {
            $alumno->darDeBaja();
        }
        $this->getUser()->setFlash('notice', 'Los alumnos fueron dados de baja correctamente.');
        $this->redirect('alumno');
    }
    public function executeListPromover(sfWebRequest $request)
    {
        $alumno = $this->getRoute()->getObject();
        if ($alumno->Promover())
        {
            $this->getUser()->setFlash('notice','El alumno fue promovido correctamente');
        }
        else
        {
            if($alumno->tieneCursosAsignados())
            {
                $this->getUser()->setFlash('error','No se puede promover, tiene cursos asignados');
                $this->redirect('alumno');
                return;
            }
            $this->getUser()->setFlash('error','No es posible promover al alumno');
        }
        $this->redirect('alumno');
    }
    public function executeBatchPromover(sfWebRequest $request)
    {
        $b = true;

        $ids = $request->getParameter('ids');

        $q = Doctrine_Query::create()
            ->from('Alumno a')
            ->whereIn('a.id_usuario', $ids);
        foreach ($q->execute() as $alumno)
        {
            if (!$alumno->Promover())
                    $b &= false;
        }
        if($b)
        {
            $this->getUser()->setFlash('notice', 'Los alumnos fueron promovidos de año correctamente.');
        }
        else
        {
            $this->getUser()->setFlash('error', 'Algunos alumnos no fueron promovidos de año correctamente.');
        }
        $this->redirect('alumno');
    }
}
